Cryptographic communication is a science with roots in the distant past. It is an invaluable medium for protecting private information from unauthorized access. The earliest forms of cryptography employed cipher pads in the possession of a sender and receiver. The pads allowed the sender to encode a readable set of characters into a seemingly random sequence of characters that would only be properly decoded by the receiver after applying the same cipher. More recently, cryptographic devices mechanized the cipher function, allowing for the sender and receiver's applicable cipher to be varied based upon a shared key code that could be changed at will.
As the Internet and other computer-based networks have become a ubiquitous and preferred medium for the transfer of personal, business and governmental information, the concern over the security of that information has increased exponentially. In general, unencrypted data transmitted over a network is fundamentally insecure and readily accessible by a wide range of unauthorized interlopers. Most modern encryption processes employed in the transfer of data over computer networks are based upon a key system.
Highly secure cryptographic systems may employ a one-time pad, which is possessed by the sender and the receiver. The pad is defined by a data source containing a sequence of random transformations between an unencrypted character and an encrypted character. An encryption algorithm for the sender indexes through the pad, transforming each character from a regular to an encrypted value. Later, the receiver's version of the algorithm uses its pad to decrypt the encrypted message by similarly indexing through the transformations for each encrypted character. A given portion of the pad's data set is designed to be used only for one specific message and then discarded. Assuming sufficient randomness in the discrete transformation values presented in the pad, it is basically impossible to break such a system. However, this approach has disadvantages in that both the sender and receiver must have the same pad, which has a finite number of character transformations. When the pad's data set is exhausted, a new pad is needed. The physical transfer of the pad between the sender and receiver is also a potential security risk. This renders a one-time pad less desirable for continual communication between users, and typically restricts its use to highly secure environments and data, where the volume of data transferred may be somewhat limited and highly controlled.
Some current data-encryption algorithms employ the symmetric key system, in which each user possesses a secret multi-bit key of the same type. This key directly encodes and decodes the transferred data in essentially the same manner as an ancient cipher system. The drawback of such a system is that, if the key is compromised, then the data transferred can be readily decoded by an unauthorized person possessing the key. The transfer of the key between the sender and receiver, so that both possess it, is a point of possible compromise, as an unauthorized person can potentially intercept it. Moreover, with sufficient computing power, even a huge key (128-bit, for example), can be broken by an unauthorized person through brute force techniques—that is, simply cycling through all variations of the key using the underlying encryption algorithm until a readable data set is derived. Also, while large keys may offer increased security from such brute force attacks, they also increase decryption time for any sent and received data between authorized users due to the increased processing overhead needed to handle such large numerical transformations.
A popular approach employed by many commercially available encryption applications is the public-private key system, also termed an asymmetric key system. This approach is desirable over a symmetric or one-time pad approach in that it does not require a potentially insecure initial transfer of pad or key information between the sender and the recipient. Rather, the algorithm resident in each of the sender and the receiver computer generates a public and private key pair, typically consisting of strings of alphanumeric characters. Briefly described, the public key of the sender and receiver are shared with each other. Each private key is retained by the sender and the recipient, respectively. The sender's private key is combined by its algorithm with the receiver's public key to create a sending encryption key. The encrypted data is decrypted by the receiver using its algorithm and a key composed of a combination of the receiver's private key and the sender's public key. Various approaches to generating the actual keys are used, with the goal of enhancing security. The public-private key approach provides reasonable security in many situations, and allows for long term communication of data without need for parties to update security information. However, data encrypted using this approach is susceptible to various attacks, such as brute force key search algorithms. In addition, the transmission of the public key between parties is subject to insecurity if an unauthorized party intercepts the transmitted public keys and substitutes its own. While a trusted certificate authority can be employed to guarantee the validity of public keys, this service may not be available or convenient in a number of data communication situations.
As the power of general purpose computers continues to increase, the ease with which even large keys can be broken also continues to grow. Likewise, the growing epidemic of worldwide Internet hacking by nefarious individuals and groups renders critical the need for a more secure data encryption system. It is therefore desirable to provide a cryptograph data communication system and method that is readily installed and employed by general purpose computers/data-handling devices (i.e. PCs, Macs, cellular telephones, PDAs and other handheld devices) without modification to hardware or operating system parameters. This system and method should allow for relatively rapid encryption and decryption of a variety of data types (text, graphics, video, audio, etc.), and should generally combine the convenience and long-term usability of a public key system with the high security of a one-time pad system. The system and method should avoid the use of transmitted keys that can be intercepted or broken. The system should also allow for transmission of secure data between a number of recipients and selective decryptability of encrypted data by discrete subset of authorized recipients within a larger group of recipients.